<?php

/**
 * 查询QQ会员信息
 * Date: 2019/10/23
 */

namespace Lib\Paas;

use Lib\Base\Validate;

class OIDB extends Base
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     *
     * 判断账号是否为指定类型的QQ-VIP账号
     *
     * @param string $vipType 要检查的VIP账号类型
     * 目前支持的VIP账号类型：
     *   club           QQ会员
     *   red            红钻
     *   yellow         黄钻
     *   blue           蓝钻
     *   qqtang         qq堂紫钻
     *   r2             音速紫钻
     *   qqpet          qq宠物粉钻
     *   green          绿钻
     *   dnf            DNF黑钻
     *   cf             CF VIP
     *   x5             炫舞紫钻
     *   xx             寻仙VIP包月服务
     *   ava            AVA VIP包月服务
     *   speed          飞车包月
     *   year_club      年费会员
     * @return array
     * [
     *      'iRet' => '=0 成功，!=0 失败',
     *      'sMsg' => '接口返回提示信息',
     *      'data' => true-是|false-否
     * ]
     *
     */
    public function isVip($vipType)
    {
        $vipTypeList = ['club', 'red', 'yellow', 'blue', 'qqtang', 'r2', 'qqpet', 'green', 'dnf', 'cf', 'x5', 'xx', 'ava', 'speed', 'year_club'];
        if (!in_array($vipType, $vipTypeList)) {
            return ['iRet' => '-1', 'sMsg' => '要查询的账号VIP类型错误！', 'data' => false];
        }

        //只有PT登录态时才可以调用该接口
        $loginInfo = $this->getLoginInfo();
        if (!isset($loginInfo['type']) || $loginInfo['type'] != 'pt') {
            return ['iRet' => '-2', 'sMsg' => '登录态类型异常！', 'data' => false];
        }

        //url
        $url = $this->getPaasRequestUrl('user.isvip', ['VIPService' => $vipType]);
        $res = $this->http->get($url);
        recordLog('用户QQ-VIP类型查询结果：' . var_export($res, true), __FILE__, __LINE__);

        if ($res['ret'] != '0') {
            $this->tglogReport('框架请求ULink-Paas出现异常，curl_errno：' . $res['ret'] . '，curl_error：' . $res['msg'], 'user.isvip');
            recordLog('调用ULink Paas查询用户QQ-VIP类型时数据时出现异常！', __FILE__, __LINE__, LP_ERROR);
            return ['iRet' => '-3', 'sMsg' => '系统繁忙，请稍后再试！', 'data' => false];
        }
        $res = $res['data'];

        if ($res['ret'] != '0') {
            return ['iRet' => '-4', 'sMsg' => '系统繁忙，请稍后再试！', 'data' => false];
        }
        return ['iRet' => '0', 'sMsg' => 'success', 'data' => $res['data']];
    }

    /**
     * QQ号转Openid，只能将当前登录态中的QQ号转换为指定appid对应的openid
     * 
     * @param int $transAppId 要转换业务的appid（只支持QQ平台）
     * 
     * @return array
     * [
     *      'iRet' => '=0 成功，!=0 失败',
     *      'sMsg' => '接口返回提示信息',
     *      'data' => [
     *          'openid'=>'转换之后的openid'
     *      ]
     * ]
     */
    public function  uin2Openid($transAppId)
    {
        if (!Validate::checkNaturalNum($transAppId, 0)) {
            return $this->getRetData('-1', 'appid必须为QQ开放平台应用ID', ['data' => []]);
        }
        //url
        $url = $this->getPaasRequestUrl('user.uin2openid', ['transAppId' => $transAppId]);
        $res = $this->http->get($url);
        recordLog('QQ号转openid接口返回结果：' . var_export($res, true), __FILE__, __LINE__);

        if ($res['ret'] != '0') {
            $this->tglogReport('框架请求ULink-Paas出现异常，curl_errno：' . $res['ret'] . '，curl_error：' . $res['msg'], 'user.uin2openid');
            recordLog('调用ULink Paas QQ转openid接口时出现异常！', __FILE__, __LINE__, LP_ERROR);
            return $this->getRetData($res['ret'], '系统繁忙，请稍后再试！', ['data' => []]);
        }
        $res = $res['data'];

        if ($res['ret'] != '0') {
            return $this->getRetData($res['ret'], '系统繁忙，请稍后再试！', ['data' => []]);
        }

        return $this->getRetData('0', 'success', ['data' => $res['data']]);
    }
}
